RTP の仕組み
RTPは、パケット損失の検知やタイミング情報の伝達。ペイロード情報の伝達を行うために、RTPヘッダが定義されている。
RTPはUDPに内包され送られるプロトコル。RTP over UDPとも言われる
UDPでは解決できない以下のものを解消する
Jitter: 揺らぎ
Out of Order: 順序逆転
Loss: 消失に関しては解決しない。再送しているほど暇はない
RTPヘッダフォーマット
RTPヘッダには、
パケットの順序制御やパケット損失検出を行うために必要なシーケンス番号や、
パケットの同期を行うためのタイムスタンプ・
RTPパケットのペイロードの内容を示すペイロードタイプ
RTPパケットのデータのフォーマットやタイムスタンプの単位
メディアストリームのIDとして利用されるSSRCやCSRC
が含まれる。
パケットの形
|一行で32bit|
|V|P|X|CC|M|PT|シーケンス番号|
|timestamp|
|SSRC ID|
ここまでで32bit(4bye)*3で12byte
|CSRC ID(1)|
|CSRC ID(...)|
|CSRC ID(n)|
table:header
フィールド 名称 ビット長 内容
V バージョン 2 RTPのバージョン。通常は2
P Padding bit 1 特定のアルゴリズムでは規定のバイト数が必要
それを穴埋めするためにある
X 拡張ビット 1 拡張ヘッダがある場合には1
CC CSRC数 4 RTPパケットのメディアストリームに含まれるCSRC数
M Marker bit 1 データの区切り
PT Payload Type 7 RTPパケットに含まれるペイロードタイプ番号
シーケンス番号 sequence number 16 RTPパケットの順序を保証するためのNumber
初期値はランダムだが、1ずつインクリメントされる
timestamp timestamp 32 サンプリングされたタイミングを示す.
SSRC Synchronization Source ID 16 MediastreamのsourceID
CSRC Contribution Source ID 16*CC Mediastreamがミキサーにより複数のソースから合成
されている場合、元となるメディアソースID
のリストを示す。(MAX15個)